--- %%NOBANNER%% -->
/*-------------------<-- Start of Description-->---------------------\
| Justify a macro text string; |
|---------------------<-- End of Description-->----------------------|
|--------------------------------------------------------------------|
|------------<-- Start of Files or Arguments Needed-->---------------|
| Arguments: |
| string: A string or a quoted string will be needed; |
| justify=center, centralized; |
| right, right justified; |
| left, left justified; |
|---------------<-- End of Files Arguments Needed-->-----------------|
|--------------------------------------------------------------------|
|------------------<-- Start of Files Created-->---------------------|
| Example: title "%justify(%initcaps(this is a text),justify=right)";|
| Usage: %justify(string, justify=); |
\-------------------<-- End of Files Created-->---------------------*/
%macro justify/parmbuff;
/*--------------------------------------------\
| Author: Duo Zhou; |
| Created: 9-16-2001 10:12pm; |
| Modified: 12-25-2001 3:01pm; |
| Purpose: Justify a macro string; |
\--------------------------------------------*/
%local _justifytexttxt1_ _justifytexttxt2_ _justifytext_ _justifyls_ _justifyindent_ _justifynewtext_;
%let _justifyls_ = %SYSFUNC(GETOPTION(linesize));
%if (%length(%nrbquote(&syspbuff)) gt 2) %then %do;
%let _justifytexttxt1_=%nrbquote(%sysfunc(compbl(%nrbquote(%substr(%nrbquote(&syspbuff), 2, %eval(%length(%nrbquote(&syspbuff))-2))))));
%if (%index(%nrbquote(%upcase(%sysfunc(compress(%nrbquote(&_justifytexttxt1_))))),%str(JUSTIFY=))) %then %do;
%let _justifymethod_=%nrbquote(%qscan(%nrbquote(&_justifytexttxt1_), 2, %str(=)));
%if (%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str( JUSTIFY))) %then
%let _justifytexttxt1_=%nrbquote(%substr(%nrbquote(&_justifytexttxt1_), 1, %eval(%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str( JUSTIFY))-2)));
%else %if (%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str(JUSTIFY))) %then
%let _justifytexttxt1_=%nrbquote(%substr(%nrbquote(&_justifytexttxt1_), 1, %eval(%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str(JUSTIFY))-2)));
%end;
%else %if (%index(%nrbquote(%upcase(%nrbquote(%sysfunc(compress(%nrbquote(&_justifytexttxt1_)))))),%str(JUST=))) %then %do;
%let _justifymethod_=%nrbquote(%qscan(%nrbquote(&_justifytexttxt1_), 2, %str(=)));
%if (%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str( JUST))) %then %do;
%let _justifytexttxt1_=%nrbquote(%substr(%nrbquote(&_justifytexttxt1_), 1, %eval(%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str( JUST))-2)));
%put text is %nrbquote(&_justifytexttxt1_);
%end;
%else %if (%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str(JUST))) %then
%let _justifytexttxt1_=%nrbquote(%substr(%nrbquote(&_justifytexttxt1_), 1, %eval(%index(%nrbquote(%upcase(%nrbquote(&_justifytexttxt1_))),%str(JUST))-2)));
%end;
%let _justifytexttxt2_=%nrbquote(%sysfunc(dequote(%nrbquote(&_justifytexttxt1_))));
%if (%index(%nrbquote(&_justifytexttxt1_),%nrbquote(&_justifytexttxt2_)) >1) %then
%let _justifynumofspace_ = %EVAL(&_justifyls_ - %LENGTH(&_justifytexttxt2_)-2);
%else %let _justifynumofspace_ = %EVAL(&_justifyls_ - %LENGTH(&_justifytexttxt1_));
%if (%quote(%upcase(&_justifymethod_))=CENTER or %quote(%upcase(&_justifymethod_))=C or %quote(%upcase(&_justifymethod_)) eq) %then
%LET _justifyindent_ = %eval(&_justifynumofspace_/2);/*%put numofspace is &numofspace., indent is &indent.;*/
%else %if (%quote(%upcase(&_justifymethod_))=RIGHT or %quote(%upcase(&_justifymethod_))=R) %then
%LET _justifyindent_ = %eval(&_justifynumofspace_-5);
%else %let _justifyindent_=0;
%let _justifynewtext_=;
%if &_justifyindent_ >=1 %then %do;
%do _i_=1 %to &_justifyindent_;
%let _justifynewtext_=&_justifynewtext_%str( );
%end;
%end;
%if (%index(&_justifytexttxt1_,&_justifytexttxt2_) >1) %then %do;
%if (%index(&_justifytexttxt2_,%str(%"))) %then %let _justifynewtext_=%nrbquote(%sysfunc(tranwrd(%nrbquote(&_justifytexttxt2_),%str(%"),%str(%'))));
%let _justifynewtext_=&_justifynewtext_"%nrbquote(&_justifytexttxt2_)";
%end;
%else %let _justifynewtext_=%nrbquote(&_justifynewtext_.&_justifytexttxt1_);
%nrbquote(&_justifynewtext_)
%end;
%MEND justify;